GUILD_UPDATE イベントが起きたときに起きることメモ
これは https://github.com/discordjs/discord.js/blob/master/src/client/websocket/handlers/GUILD_UPDATE.js を追って得た情報のメモである。
https://github.com/discordjs/discord.js/blob/stable/src/client/actions/GuildUpdate.js
Partial が設定されていようと無かろうと cache にない Guild は無視されている。
guild 自体は接続時に全て送られてくるから partial されることはない yuta0801.icon
https://old.discordjs.dev/#/docs/main/stable/typedef/PartialType
そしてGuildクラスにも .partial はない
partial はあくまでキャッシュされていなく手動で fetch しないと行けない場合への対処なので Intents とは別概念
guildUpdate イベントを呼び出している
Guild は_update をオーバーライドしていないので Base の _update が呼ばれる。
https://github.com/discordjs/discord.js/blob/stable/src/structures/Base.js#L27
code:javascript
_clone() {
return Object.assign(Object.create(this), this);
}
// _patch は Guild でオーバーライドされていることに注意されたい
_patch(data) {
return data;
}
_update(data) {
const clone = this._clone();
this._patch(data);
return clone;
}
すなわち、もとのインスタンスを新しい情報で更新する前にコピーを作っておく。
Client の evnet として古い方も流すために
guild._patch() については GUILD_CREATE イベントが起きたときに起きることメモ を参照。